/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cooperativa.dao;

import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.cooperativa.entities.Socio;
import org.cooperativa.entities.Unidad;

/**
 *
 * @author giovanny
 */
@Stateless
public class UnidadFacade extends AbstractFacade<Unidad> {
    @PersistenceContext(unitName = "CooperativaPU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public UnidadFacade() {
        super(Unidad.class);
    }
    
    /***El siguiente metodo sirve para recuperar el numero de unidades de un socio***/
    public int contarUnidadesSocio(Socio socio) {
        int numeroUnidades;
        
        try{
        Query q = em.createNamedQuery("Unidad.findBySocio");
        q.setParameter("idSocio", socio);
        
        List<Unidad> result = (List<Unidad>) q.getResultList();
        
        numeroUnidades = result.size();
        
        return numeroUnidades;
        }
        catch(Exception e){
            
        return 0;
        }
    }
    
    /***El siguiente metodo sirve para calcular el total a pagar por el socio***/
    public double calcularTotalPagar(Socio socio, int mesesPagar, double tarifa) {
        int numeroUnidades;
        double resultado;
        
        try{
            //Se debe tomar en cuenta que habra meses con tarifas diferentes.
            numeroUnidades = contarUnidadesSocio(socio);
            
            resultado = numeroUnidades*tarifa*mesesPagar;
            
            return resultado;
        }
        catch(Exception e){
            
        return 0.0;
        }
    }
    
}
